<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------

namespace app\configs\admin;

use app\admin\controller\Admin;
use think\Db;
use app\common\builder\ZBuilder;
use think\facade\Cache;

/**
 * dept控制器
 * @package app\banner\admin
 */
class Dept extends Admin
{

    protected $type=[
        "1"=>'壳牌',
        "2"=>'中石油',
        "3"=>'中石化',
    ];

    public function index(){
        $map = $this->getMap();

        // 定义新增页面的字段
        $fields = [
            ['text', 'name', '加油站名称'],
           ['select', 'type', '类型','',$this->type,1],
           ['bmap', 'addr', '地址','AGdoFfGaLSHibGRH0fZGrl4o'],
            //['wangeditor', 'content', '内容'],
            ['text', 'content', '备注'],
        ];
        // 定义编辑页面的字段
        $fields2 = [
            ['hidden', 'id'],
            ['text', 'name', '加油站名称'],
            ['select', 'type', '类型','',$this->type],
            ['bmap', 'addr', '地址','AGdoFfGaLSHibGRH0fZGrl4o'],
//             ['wangeditor', 'content', '内容'],
            ['text', 'content', '备注'],
        ];
        

        $data_list = db::name('dept')
            ->where($map)
            ->order("id desc")
            ->paginate();

        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
            ->setPageTitle('加油站地址管理中心') // 设置页面标题
            ->setTableName('dept') // 设置数据表名
            ->hideCheckbox()
            ->setSearch(['name' => '名称']) // 设置搜索参数
            ->addColumns([ // 批量添加列
                ['name','标题','text.edit'],
                ['type','类型','select',$this->type],
                ['content','备注'],
                ['right_button', '操作', 'btn']
            ])
            ->autoAdd($fields, 'dept','','create_time|Y-m-d H:i:s','',true) // 添加新增按钮
            ->autoEdit($fields2, 'dept','','update_time|Y-m-d H:i:s','',true) // 添加编辑按钮
            ->addRightButtons('delete') // 批量添加右侧按钮
            ->setRowList($data_list) // 设置表格数据
            ->setColumnWidth(["title"=>150])
            ->fetch(); // 渲染页面
    }
    
    
    
    
    
    
    /**
     * 自动创建添加页面
     * @author 蔡伟明 <314013107@qq.com>
     * @return mixed
     * @throws \think\Exception
     */
    public function add()
    {
        // 获取表单项
        $cache_name = $this->request->module().'/'.parse_name($this->request->controller()).'/add';
        $cache_name = strtolower($cache_name);
        $form       = Cache::get($cache_name, []);
        if (!$form) {
            $this->error('自动新增数据不存在，请重新打开此页面');
        }
        
        // 保存数据
        if ($this->request->isPost()) {
            // 表单数据
            $data = $this->request->post();
            $_pop = $this->request->get('_pop');
            if(isset($data['addr'])){
                $addr=explode(",", $data['addr']);
                $data['lat']=$addr['1'];
                $data['lng']=$addr['0'];
            }
            // 验证
            if ($form['validate'] != '') {
                $result = $this->validate($data, $form['validate']);
                if(true !== $result) $this->error($result);
            }
            
            // 是否需要自动插入时间
            if ($form['auto_time'] != '') {
                $now_time = $this->request->time();
                foreach ($form['auto_time'] as $item) {
                    if (strpos($item, '|')) {
                        list($item, $format) = explode('|', $item);
                        $data[$item] = date($format, $now_time);
                    } else {
                        $data[$item] = $form['format'] != '' ? date($form['format'], $now_time) : $now_time;
                    }
                }
            }
            
            // 插入数据
            if (Db::name($form['table'])->insert($data)) {
                if ($_pop == 1) {
                    $this->success('新增成功', null, '_parent_reload');
                } else {
                    $this->success('新增成功', $form['go_back']);
                }
            } else {
                $this->error('新增失败');
            }
        }
        
        // 显示添加页面
        return ZBuilder::make('form')
        ->addFormItems($form['items'])
        ->fetch();
    }
    
    /**
     * 自动创建编辑页面
     * @param string $id 主键值
     * @author 蔡伟明 <314013107@qq.com>
     * @return mixed
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     * @throws \think\exception\PDOException
     */
    public function edit($id = '')
    {
        if ($id === '') $this->error('参数错误');
        
        // 获取表单项
        $cache_name = $this->request->module().'/'.parse_name($this->request->controller()).'/edit';
        $cache_name = strtolower($cache_name);
        $form       = Cache::get($cache_name, []);
        if (!$form) {
            $this->error('自动编辑数据不存在，请重新打开此页面');
        }
        
        // 保存数据
        if ($this->request->isPost()) {
            // 表单数据
            $data = $this->request->post();
            $_pop = $this->request->get('_pop');
            if(isset($data['addr'])){
                $addr=explode(",", $data['addr']);
                $data['lat']=$addr['1'];
                $data['lng']=$addr['0'];
            }
            // 验证
            if ($form['validate'] != '') {
                $result = $this->validate($data, $form['validate']);
                if(true !== $result) $this->error($result);
            }
            
            // 是否需要自动插入时间
            if ($form['auto_time'] != '') {
                $now_time = $this->request->time();
                foreach ($form['auto_time'] as $item) {
                    if (strpos($item, '|')) {
                        list($item, $format) = explode('|', $item);
                        $data[$item] = date($format, $now_time);
                    } else {
                        $data[$item] = $form['format'] != '' ? date($form['format'], $now_time) : $now_time;
                    }
                }
            }
            
            // 更新数据
            if (false !== Db::name($form['table'])->update($data)) {
                if ($_pop == 1) {
                    $this->success('编辑成功', null, '_parent_reload');
                } else {
                    $this->success('编辑成功', $form['go_back']);
                }
            } else {
                $this->error('编辑失败');
            }
        }
        
        // 获取数据
        $info = Db::name($form['table'])->find($id);
        
        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
        ->setPageTitle('编辑')
        ->addFormItems($form['items'])
        ->setFormData($info)
        ->fetch();
    }
    
    
    
    
    
    
    
}
